iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 4

理想跟現實不一樣有甚麼損失?番外篇(客製化AI訓練目標--正則化器)

  • 分享至 

  • xImage
  •  

前言

昨天的內容我們談到幾種常見的損失函數,分別被使用在不同的任務情境中。不過,我們是否只能使用這幾種損失函數呢?如果我的使用情境中有些特殊條件呢?我們是否有方法可以設計出一個客製化的模型訓練目標?

先備知識

  1. 線性代數(至少需要知道L1, L2 norm怎麼算)

看完今天的內容你可能會知道......

  1. 甚麼是正則化器?
  2. 常見的正則化器有甚麼作用?

一、正則化器(Regularizers)

  • 在一些數學或電腦問題中,我們為了達成某種任務目標,會設計出一個「最佳化目標(Optimization goal)」,以AI模型為例,就是我們花了一些時間討論的「損失函數」,也就是模型的訓練目標。通過定義出這樣的目標,接著我們會使用一些最佳化的方式來找到最佳的解,之前談過的梯度下降法就是其中一種,它利用迭代的方式,一步步的更新參數直到迭代結束或是達到當前的最佳解。
  • 不過,正如前言所提到的,有些任務還會有一些額外的限制,比如說:在影像壓縮的系統中,我們希望可以適用盡可能少的資訊來記錄一張圖片,同時在解壓縮後要盡可能與原先的圖片不要有太大的差異,在這樣的情境中,「還原圖片與原始圖片的差異要夠小」是我們的主要任務目標,而「使用盡可能少的資訊紀錄圖片」則是我們的額外限制。
  • 為了處理這些額外的限制,我們通常會在原先的最佳化目標之外加上其他目標,這些其他的目標被我們稱為「正則化器」。正則化器是一個概念,只要是在主要任務目標以外加入的額外限制,都可以稱做是正則化器,也正因此正則化器有許多種不同的形式,用來滿足不同的條件,以下將會介紹幾種在AI任務中常見的正則化器。

二、https://chart.googleapis.com/chart?cht=tx&chl=%5C%7Cx%5C%7C_p%20 正則化器

  • 這邊先簡短的介紹一下「範數(Norm)」這個數學概念。
  • 在數學中我們會討論不同維度、不同條件的空間(Space),分析裡面的元素可以做到哪些運算、有怎樣的特性等等的,其中範數可以視為某種特殊的「長度」,生活中最常見的就是L1與L2範數。現在考慮一個有n個維度的點 https://chart.googleapis.com/chart?cht=tx&chl=%5Ctext%7Bn-D%20%7D%20x%20%3D%20(x_1%2C%20x_2%2C%20%5Cldots%2C%20x_n) 裡面的每個 https://chart.googleapis.com/chart?cht=tx&chl=%20x_n 代表在第n個方向上的分量。L1範數是https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20%5C%7Cx%5C%7C_1%20%3D%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20%7Cx_i%7C%20%5C%5D 即所有元素絕對值差異的總和,L2範數則是https://chart.googleapis.com/chart?cht=tx&chl=%5C%7Cx%5C%7C_2%20%3D%20%5Csqrt%7B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20%7Cx_i%7C%5E2%7D ,差異的平方合再開根號,具體的作用可參考下圖。
  • https://ithelp.ithome.com.tw/upload/images/20230919/20163299h6ci4MtlFE.png
  • 從公式跟圖片我們可以感受到,不同的「長度」算法,似乎有著不同的意義,L1範數會限制每個點當中所有分量絕對值得總和大能大於目標值(以上圖為例就是1),L2範數則是有更加平滑的效果,因為它考慮的是每個分量的平方總和。
  • 回到我們的主題,在AI模型的訓練中,我們很常使用L1範數來減少參數量,可以稍微想想一下,一個點中的每個分量的重要性都不一樣,因此,L1範數會傾向於讓那些相對不重要的分量歸零,也就是增加稀疏性,因為都是0,所以不需要花額外的儲存空間記錄這些部分(這個系列的尾聲將會有一個部分在討論AI模型的壓縮與加速,屆時會再來討論更多L1範數的細節)。
  • L2範數的使用程度更多廣泛,因為其平滑的特性,可以減緩AI模型訓練當中最害怕的「過擬合(Overfitting)現象」發生。
  • 在講解為甚麼之前,我們先花些時間看看所謂的過擬合是甚麼現象,如果今天要畫一條線將下圖橘藍兩區分開的話,你會怎麼畫?
  • https://ithelp.ithome.com.tw/upload/images/20230919/20163299Z3oJtxyjKM.png
  • 這邊有兩種畫法https://ithelp.ithome.com.tw/upload/images/20230919/20163299PkJMrf9RIX.png
  • 左邊的非常的完美,每個點都分開的很確實,而右邊的曲線雖然沒有每個點都分正確,可是卻相對平滑。在訓練一個AI模型的時候,我們不太喜歡看到左邊的現象,這是因為我們通常會選定好一些數據用來訓練模型,可是如果這個模型在這些數據上學習得太好,這種情況下,對於這個模型沒看過的,或是稍微有些不同的數據,模型就沒辦法發揮得很好,用人類的角度來理解的話,很像是你把爸媽給你買的所有參考書死記硬背學下來了,可是今天老師隨便從題庫裡面挑一題出來改一下,你就做不出來了。
  • 上面的例子好像在告訴我們「精確」跟「彈性/靈活」之間需要達到平衡,訓練AI模型也是一樣,當這個模型在用來訓練的資料上表現得很好,他可能就會在其他的數據上失去彈性,這也就是為甚麼我們需要避免過擬合的原因。L2範數因為他的平滑特性,所以可以使原先上圖左邊的結果更傾向於右邊的結果,因此可以減緩過擬合現象的產生。
  • 範數類型的正則化器還有很多可以談,這邊只介紹主流的兩種,更多的內容可以參考:https://zh.wikipedia.org/zh-tw/%E6%AD%A3%E5%88%99%E5%8C%96_(%E6%95%B0%E5%AD%A6)

三、空間上的正則化--Dropout

  • 上面有提到避免過擬合的原因就是希望可以增加模型的彈性,在數學裡面我們可以稱之為增加「穩健性(Robustness)」,讓系統可以應付更多不同類型的輸入,也不會有太大的表現差異。
  • 除了L2範數以外,另外一種常見的,避免過擬合的方式就是「Dropout」,也就是在模型訓練的過程中,隨機丟掉某些參數(也可以想成是隨機歸零某些參數),因為AI模型有非常多的參數,因此整個模型的「可塑性」非常大,通過隨機丟掉某些參數的方法,反倒可以讓AI模型的某些參數訓練得更好。
  • 想像一下,如果給你一張圖片,讓你判斷是貓還是狗,你會關注的地方應該是耳朵、臉型、尾巴...等等的,而不是毛色、地板的顏色之類的,這是因為我們知道哪些部份是決定性的關鍵,因此只要有這些關鍵部位,我們就能大致猜出這張圖片是貓還是狗。在AI模型當中,不同的參數會用來辨識不同的特徵,所以我們當然希望比較關鍵的部分能夠被找出來,而不是學習比較不相關的資訊。有個知名的例子是,由於我們用來訓練的圖片中,馬都是配上草地背景,導致訓練好在使用模型的時候,有一張躺在草地上的貓也被判斷成馬,這就是因為模型學到的特徵不是最關鍵的特徵,因此就會影響模型的判斷能力。

四、時間上的正則化--Early stopping

  • 就像人類學習一樣,前面有提過瘋狂做題目可是不會變通的例子,解決的方法除了找出題目關鍵,針對這些關鍵概念學習以外,還有一種方式是你原本要做30道題目,現在只做了20道題目就被朋友叫出去玩了。如果學好學滿整整30道題會產生反效果的話,那我們學少一點就好了。AI模型也有類似的概念,也就是提早停止,因為隨著AI模型的訓練時間增加,模型的可塑性越低,模型也會變得更加複雜,會更傾向於上面左圖的結果,所以最直接的方式就是在變成那樣之前就停止學習。
  • 在模型已經有基本的能力時就停止,才不會導致模型越學越偏(走火入魔?),也就可以避免過擬合現象的產生。

五、總結

  • 今天的內容中,我們簡單的介紹了正則化器的概念,並說明正則化器對AI模型可以產生什麼樣的影響,只要了解這些影響,我們便可利用相同的邏輯設計自己的正則化器,看我們的任務是需要減少餐數量、對某些物件要增強效果或是其他的應用都可以透過正則化器把額外的限制提供給模型。

上一篇
理想跟現實不一樣有甚麼損失?AI的訓練目標--損失函數
下一篇
現代問題就要用現代方法來處理--AI中的線性代數(以MLP為例)
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言